package com.wlz.workqueue;

import com.rabbitmq.client.*;
import com.wlz.utils.RabbitUtils;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

/**
 * 工作队列（公平性） 模式  -- 接收者2
 * @author wlz
 * @date 2022-06-27  9:55 下午
 */
@Slf4j
public class SmsSender2 {

    public static void main(String[] args) throws Exception{

        Connection connection = RabbitUtils.getConnection();

        Channel channel = connection.createChannel();

        String queueName = "wlz_sms";

        channel.queueDeclare(queueName, false,false,false, null);

        //如果不写basicQos（1），则自动MQ会将所有请求平均发送给所有消费者
        //basicQos,MQ不再对消费者一次发送多个请求，而是消费者处理完一个消息后（确认后），在从队列中获取一个新的
//        channel.basicQos(1); // 处理完一个取一个

        channel.basicConsume(queueName, false, new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String s = new String(body);
                log.info("smsSender2-短信发送成功: {} ", s);
//                try {
//                    Thread.sleep(100);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
                channel.basicAck(envelope.getDeliveryTag(), false);
            }
        });
    }
}

